package com.lmf.annotation.condition;

import com.lmf.annotation.bean.Yellow;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.beans.factory.support.RootBeanDefinition;
import org.springframework.context.annotation.ImportBeanDefinitionRegistrar;
import org.springframework.core.type.AnnotationMetadata;

//手动注册bean到容器中
public class MyImportBeanDefinitionRegistrar implements ImportBeanDefinitionRegistrar {
    /**
     * AnnotationMetadata：当前类的注解信息
     * BeanDefinitionRegistry：当前所有注册类的信息
     *
     * 我们可以通过调用BeanDefinitionRegistry接口中的 registerBeanDefinition 方法，手动注册所有需要添加到容器中的bean
     */
    @Override
    public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {
        boolean b = registry.containsBeanDefinition("com.lmf.annotation.bean.Red");
        boolean b1 = registry.containsBeanDefinition("com.lmf.annotation.bean.Blue");
        if (b1 && b) {
            // 指定bean的定义信息，包括bean的类型、作用域等等
            // RootBeanDefinition是 BeanDefinition 接口的一个实现类，
            RootBeanDefinition beanDefinition = new RootBeanDefinition(Yellow.class);//bean的定义信息
            //注册一个bean，并指定名称
            registry.registerBeanDefinition("黄色",beanDefinition);
        }
    }
}
